import Vue from 'vue'

function px2rpx(num) {
	let result = 0
	let sysInfo = uni.getSystemInfoSync()
	result = 750 * num / sysInfo.screenWidth
	return result
}

function formatWordcount(count) {
	count = parseFloat(count) || 0
	if (count < 10000) {
		return count.toString()
	}
	return (count / 10000).toFixed(1) + '万'
}

function formatByte(num) {
	num = parseFloat(num) || 0
	if (num < 1000) {
		return num.toFixed(2) + 'B'
	} else if (num < 1000000) {
		return (num / 1000).toFixed(2) + 'KB'
	} else if (num < 1000000000) {
		return (num / 1000000).toFixed(2) + 'MB'
	} else {
		return (num / 1000000000).toFixed(2) + 'GB'
	}
}

// 格式化时间戳
function formatTimestamp(t, fmt = 'yyyy-MM-dd hh:mm:ss') {
	t = t || Date.now();
	let ret;
	let time = new Date(t);
	const opt = {
		"y+": time.getFullYear().toString(), // 年
		"M+": (time.getMonth() + 1).toString(), // 月
		"d+": time.getDate().toString(), // 日
		"h+": time.getHours().toString(), // 时
		"m+": time.getMinutes().toString(), // 分
		"s+": time.getSeconds().toString() // 秒
		// 有其他格式化字符需求可以继续添加，必须转化成字符串
	};
	for (let k in opt) {
		ret = new RegExp("(" + k + ")").exec(fmt);
		if (ret) {
			fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
		};
	};
	return fmt;
}

// 文件读
function fileReader(filename) {
	return new Promise((resolve, reject) => {
		//#ifdef APP-PLUS
		plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
			// fs.root是根目录操作对象DirectoryEntry
			fs.root.getFile(filename, {
				create: true
			}, function(fileEntry) {
				fileEntry.file(function(file) {
					var fileReader = new plus.io.FileReader();
					fileReader.readAsText(file, 'utf-8');
					fileReader.onloadend = function(evt) {
						// console.log('内容：', evt)
						resolve(evt.target.result)
					}
				});
			});
		});
		//#endif
		//#ifndef APP-PLUS
		resolve('')
		//#endif
	})
}

// 文件写
function fileWriter(filename, content) {
	return new Promise((resolve, reject) => {
		//#ifdef APP-PLUS
		plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
			// fs.root是根目录操作对象DirectoryEntry
			fs.root.getFile(filename, {
				create: true
			}, function(fileEntry) {
				fileEntry.file(function(file) {
					// create a FileWriter to write to the file
					fileEntry.createWriter(function(writer) {
						writer.seek(0)
						writer.write(content);
						// console.log('写入成功')
						resolve(true)
					}, function(e) {
						// console.log('写入失败')
						resolve(false)
					});
				});
			});
		});
		//#endif
		//#ifndef APP-PLUS
		resolve('')
		//#endif
	})
}

// 判断是否为json字符串
function isJSONStr(str) {
	if (typeof str === 'string') {
		try {
			var obj = JSON.parse(str);
			if (typeof obj === 'object' && obj) {
				return true;
			} else {
				return false;
			}
		} catch (e) {
			return false;
		}
	}
}

// 节流
const throttling = (function() {
	let timer = 0
	return function(callback, delay = 2000) {
		clearTimeout(timer)
		timer = setTimeout(callback, delay)
	}
})()

//导出
export default {
	px2rpx, // px转rpx
	formatWordcount, // 格式化字数以万为单位
	formatByte, // 格式化字节
	formatTimestamp, // 格式化时间戳
	fileReader, // 文件读
	fileWriter, // 文件写
	isJSONStr, // 判断是否为json字符串
	throttling, // 节流
}
